﻿Imports System.IO
Imports System.Data
Imports System.Data.SqlClient
Imports System.Linq
Imports TNCDAL
Imports TNCBAL
Imports HTLibrary

Public Class ucPaymentVoucher
    Inherits System.Windows.Forms.UserControl
    Dim mPmV As New MPaymentVoucher
    Dim uti As New Utilities
    Dim _idPaymentV As Integer = 0
    Dim _id_filefee As Integer
    Dim _arrayFileFee As ArrayList
    Dim _price As Double
    Dim _isNew As Boolean = False
    Dim _isEdit As Boolean = False
    Dim _isFileFee As Boolean = False
    Dim mfile As New MFiles
    Dim _idFile As Integer
    Dim _idOneFile As Integer
    Dim newOnePayment As Boolean = False
    Dim _loadedData As Boolean = False
    Dim _isExport As Boolean
    Dim isApprove As Boolean = False
    Public Sub New(ByVal idFile As Integer, ByVal isExport As Boolean)
        InitializeComponent()
        DataGridViewHelper.DataGridView_InitEvent(grid)
        DataGridViewHelper.DataGridView_InitEvent(gridDetail)
        _idOneFile = idFile
        _isNew = True
        _isEdit = False
        _isExport = isExport
        newOnePayment = True
    End Sub
    Public Sub New(ByVal id_FileFee As Integer, ByVal price As Double)
        InitializeComponent()
        _id_filefee = id_FileFee
        _price = price
    End Sub
    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.

    End Sub
    Public Sub New(ByVal arrayFileFee As ArrayList, ByVal price As Double)
        InitializeComponent()
        _arrayFileFee = arrayFileFee
        _price = price
        txtAmount.Text = price
    End Sub
    Private Sub BindingDataToGrid()
        Dim query = mPmV.GetVoucherList()
        Dim source As New BindingSource
        source.DataSource = query
        BindingNavigator1.BindingSource = source
        grid.DataSource = source

        grid.Columns(0).Visible = False
        grid.Columns(5).Visible = False
        grid.Columns(8).Visible = False
        grid.Columns(11).Visible = False
        'grid.Columns(10).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
        'grid.Columns(11).Visible = False
        EnableControls(False)

        'If _idPaymentV <> 0 Then
        '    'Nếu có tồn tại payment voucher rồi thì focus đến vị trí đó

        '    For index = 0 To grid.Rows.Count() - 1


        '        If CType(grid.Rows(index).Cells(0).Value, Integer) = _idPaymentV Then
        '            grid.Focus()
        '            grid.CurrentCell = grid(index, 0)
        '            Exit For
        '        End If


        '    Next

        'End If

    End Sub

    Private Sub LoadImport()
        'Load danh sách file đã được chi rồi
        uti.FillAllFileFinishPaymentComboTree(cbTreeFileCase, chkExport.Checked)
        cbTreeFileCase.Enabled = True
        chkExport.Enabled = True
        txtAmount.Enabled = False
        _isFileFee = True
        'Load advancevoucher
        uti.FillUserCombo(cbDirector, 4)

        datePayment.Value = DateTime.Now()

    End Sub
    Private Sub EnableControls(ByVal v As Boolean)

        datePayment.Enabled = v
        'txtPMVNo.Enabled = v

        txtCashier.Enabled = v
        txtDescription.Enabled = v

        txtVietBangChu.Enabled = v
        txtReceiver.Enabled = v
        cbDirector.Enabled = v
        cbTreeFileCase.Enabled = v

        'txtInvoiceNo.Enabled = v
        If _isNew Then
            txtID_PaymentVoucher.Text = 0
            datePayment.Value = DateTime.Now()
            'txtPMVNo.Text = ""

            txtCashier.Text = ""

            If newOnePayment Then
                txtDescription.Text = "Chi phí file " & mfile.getFileNoFile(cbTreeFileCase.SelectedValue)

            Else
                txtDescription.Text = "Chi phí file " & mfile.getFileNoFile(_idOneFile)
                txtAmount.Text = ""
                txtVietBangChu.Text = ""
            End If

           
            txtReceiver.Text = ""
            cbDirector.SelectedIndex = 0
            txtNguoiLapPhieu.Text = GeneralClassBAL._User.UserName
            '  txtInvoiceNo.Text = ""


        End If


    End Sub
    Private Sub frmPaymentVoucher_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      
        LoadImport()
        BindingDataToGrid()
        If newOnePayment Then
            AddNewOnePaymentVoucher()
        Else
           
        End If

    End Sub

    Private Sub grid_RowEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grid.RowEnter
        'Load vào các textbox

        If newOnePayment = False Then

            Dim rw As Integer = e.RowIndex
            Dim dg As DataGridView = CType(sender, DataGridView)
            txtID_PaymentVoucher.Text = dg.Item(0, rw).Value   'row.Item("id").ToString
            txtPMVNo.Text = dg.Item(1, rw).Value

            If dg.Item(2, rw).Value IsNot Nothing Then
                datePayment.Value = CType(dg.Item(2, rw).Value.ToString(), DateTime)
            End If
            txtReceiver.Text = dg.Item(3, rw).Value
            txtAmount.Text = dg.Item(4, rw).Value
            txtDescription.Text = dg.Item(10, rw).Value
            If dg.Item(5, rw).Value IsNot Nothing Then
                cbDirector.SelectedValue = CInt(dg.Item(5, rw).Value)
            End If
            txtCashier.Text = dg.Item(7, rw).Value
            If dg.Item(9, rw).Value IsNot Nothing Then
                txtNguoiLapPhieu.Text = dg.Item(9, rw).Value
            End If

            'If dg.Item(12, rw).Value IsNot Nothing Then
            '    txtApproveUser.Text = dg.Item(12, rw).Value
            'End If
            'If dg.Item(13, rw).Value IsNot Nothing Then
            isApprove = CBool(dg.Item(13, rw).Value)
            'End If
            'Lấy thông tin file của paymentVoucher
            Try
                _idFile = mPmV.getFileOfPaymentVoucher(txtID_PaymentVoucher.Text)
                'Lấy tỉ giá
                txtTigia.Text = CDbl(mfile.GetRatioCurrency(_idFile))
                cbTreeFileCase.SelectedValue = _idFile
                'Load thông tin danh sách phí vào bảng chi tiết
                Dim query = mPmV.GetListFee2(_idFile)

                If query IsNot Nothing Then
                    gridDetail.DataSource = query
                    gridDetail.Columns(0).Visible = False
                    gridDetail.Columns(1).Visible = False
                    gridDetail.Columns(2).Visible = False
                    gridDetail.Columns(5).Visible = False
                Else
                    gridDetail.DataSource = Nothing
                End If


            Catch ex As Exception
                _idFile = 0
                txtTigia.Text = ""
                gridDetail.DataSource = Nothing
            End Try
        End If


    End Sub
    Private Sub FormatGrid()
        Try
            grid.Columns(4).DefaultCellStyle.Format = "#,##0.#"
            grid.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
            'grid.Columns(4).DefaultCellStyle.Format = "#,##0.#"
            'grid.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        Catch ex As Exception

        End Try

    End Sub
    Private Sub FormatGridDetail()
        Try
            gridDetail.Columns(4).DefaultCellStyle.Format = "#,##0.#"
            gridDetail.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        
        Catch ex As Exception

        End Try

    End Sub

    Private Sub txtAmount_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount.TextChanged

        'If txtAmount.Text <> "" Then
        '    Dim chuoi As String() = txtAmount.Text.Split(New Char() {","})
        '    Dim chuoicanchuyen As String = ""
        '    For Each item As String In chuoi
        '        chuoicanchuyen += item
        '    Next
        '    Dim chuoi1 As String = XuLyChuoi.Doisosangchu(chuoicanchuyen).ToLower().Substring(0, 1)
        '    Dim chuoi2 As String = XuLyChuoi.Doisosangchu(chuoicanchuyen).ToLower().Substring(1)
        '    txtVietBangChu.Text = chuoi1.ToUpper() & chuoi2 + "đồng"
        '    'txtAmount.Text = XuLyChuoi.ThemDauPhayVaoChuoi(chuoicanchuyen)
        'End If

        If txtAmount.Text <> "" Then
            txtVietBangChu.Text = CModule_Sy.NumToStringVietNam(txtAmount.Text)
        End If

        uti.FormatCurr(txtAmount)

    End Sub


    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
        _isNew = True
        _isEdit = False
     
        EnableControls(True)
        btnEdit.Enabled = False
        btncancel.Enabled = True
        btnSave.Enabled = True
        btnDelete.Enabled = False
        btnAdd.Enabled = False
        'Hiển thị panel
        'panelCase.Visible = True
        'radFileFee.Checked = False
        'radOrtherFee.Checked = False
        'gridDetail.DataSource = Nothing
        _idPaymentV = 0
        'Load danh sách file chưa được chi
        uti.FillAllFileForPaymentComboTree(cbTreeFileCase, chkExport.Checked)

        'Lấy số tự động
        Dim pNo As Integer = mPmV.GetLastedPaymentNo()

        If pNo = 0 Then
            txtPMVNo.Text = 1 & "/PC"

        Else
            txtPMVNo.Text = pNo + 1 & "/PC"
        End If
        txtReceiver.Focus()
    End Sub

    Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click
        'Kiểm tra file đã approve chưa, nếu rồi thì k cho phép sửa

        If isApprove = True Then
            MessageBox.Show("Payment Voucher is approved. Don't allow edit")
            Return
        End If

        _isEdit = True
        _isNew = False
        EnableControls(True)
        btnAdd.Enabled = False
        btnSave.Enabled = True
        btnEdit.Enabled = False
        btncancel.Enabled = True
        btnDelete.Enabled = False
        _idPaymentV = 0
        'Kiểm tra nếu là phí file thì enable text nhập số tiền

        If _idFile > 0 Then
            txtAmount.Enabled = False
        Else
            'Nếu là phí khác thì disable
            txtAmount.Enabled = False
        End If
        txtPMVNo.Focus()
        isApprove = False
    End Sub

    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click

        If gridDetail.RowCount <= 0 Then
            'Không có phí nào
            MessageBox.Show("Chưa có danh sách phí giá mua của File")
            cbTreeFileCase.Focus()
            Return
        End If

        If txtPMVNo.Text = "" Then
            MessageBox.Show("Chưa nhập số phiếu chi")
            txtPMVNo.Focus()
            Return
        End If

        If txtReceiver.Text = "" Then
            MessageBox.Show("Chưa nhập tên người nhận")
            txtReceiver.Focus()
            Return
        End If

        If txtAmount.Text = "" Then
            MessageBox.Show("Chưa nhập số tiền")
            txtAmount.Focus()
            Return
        End If

        If CInt(txtAmount.Text) = 0 Then
            MessageBox.Show("Kiểm tra lại phí buying của File. Phí chưa được tính")
            cbTreeFileCase.Focus()
            Return
        End If


        If txtDescription.Text = "" Then
            MessageBox.Show("Chưa nhập lý do chi")
            txtDescription.Focus()
            Return
        End If





        If _isNew Then
            Dim obj As New tblPaymentVoucher

            'If chkTU.Checked = True Then
            '    obj.ID_AdvanceVoucher = cbAdvanceVoucher.SelectedValue
            'End If

            obj.CreatedDate = datePayment.Value.ToShortDateString
          
            obj.PaymentVoucherNo = txtPMVNo.Text

            obj.Description = txtDescription.Text
            obj.Reciever = txtReceiver.Text
            obj.Amount = Double.Parse(txtAmount.Text.Replace(".", ""))
            obj.ID_Director = cbDirector.SelectedValue
            obj.Cashier = txtCashier.Text
            obj.ID_User = GeneralClassBAL._User.ID_User
            obj.IsApprove = False

            ' obj.InvoiceNo = txtInvoiceNo.Text
            mPmV.InsertNewRecord(obj)
            'Nếu thêm từ bên exportFile

            'Nếu lúc chọn phiếu chi cho phí thì chạy code này

            If _isFileFee Or newOnePayment Then
                'Sau khi thêm xong thì lấy giá trị idPayment mới để thêm vào file feee
                Dim id_PaymentVoucher As Integer = 0
                id_PaymentVoucher = mPmV.getIDNewPaymentVoucher()
                'update vào file fee
                'Duyệt qua bảng chi tiết phí file

                For index = 0 To gridDetail.Rows.Count - 1
                    Dim objff As New tblFileFee
                    objff.ID_FileFee = CInt(gridDetail.Rows(index).Cells(0).Value)
                    objff.ID_PaymentVoucher = id_PaymentVoucher
                    Dim mbr As New MBuyingRate
                    mbr.UpdatePaymentVoucher(objff)
                Next


            Else

            End If


        End If

        If _isEdit Then
            'Khi sửa thì chỉ cho sửa số tiền
            Dim obj As New tblPaymentVoucher
            obj.ID_PaymentVoucher = txtID_PaymentVoucher.Text

            'If chkTU.Checked = True Then
            '    obj.ID_AdvanceVoucher = cbAdvanceVoucher.SelectedValue
            'End If
            '  obj.ID_PaymentVoucher = cbAdvanceVoucher.SelectedValue
            obj.CreatedDate = datePayment.Value.ToShortDateString
            obj.PaymentVoucherNo = txtPMVNo.Text
            obj.Description = txtDescription.Text
            obj.Reciever = txtReceiver.Text
            obj.Amount = Double.Parse(txtAmount.Text.Replace(".", ""))
            obj.ID_Director = cbDirector.SelectedValue
            obj.Cashier = txtCashier.Text
            obj.ID_User = GeneralClassBAL._User.ID_User
            '   obj.InvoiceNo = txtInvoiceNo.Text
            mPmV.UpdateRecord(obj)

        End If

        btnAdd.Enabled = True
        btnEdit.Enabled = True
        btncancel.Enabled = False
        btnDelete.Enabled = True
        btnSave.Enabled = False
        _isNew = False
        _isEdit = False
        newOnePayment = False

        BindingDataToGrid()
        EnableControls(False)

    End Sub


    Private Sub btPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btPrint.Click
        'lấy thông tin của phiếu chi hiện thời
        Dim id As Integer
        Try
            id = Integer.Parse(txtID_PaymentVoucher.Text)
        Catch ex As Exception
            id = 0
        End Try
        Dim pv As tblPaymentVoucher = mPmV.SelectRecordById(id)
        If (pv IsNot Nothing) Then
            Dim rpt As New rptPhieuChi
            'set các giá trị
            If (pv.CreatedDate.HasValue) Then
                Dim chuoiNgay As String = "Ngày " & pv.CreatedDate.Value.Day & " tháng " & pv.CreatedDate.Value.Month & " năm " & pv.CreatedDate.Value.Year
                rpt.SetParameterValue("NgayCT", chuoiNgay)
            Else
                rpt.SetParameterValue("NgayCT", "")
            End If
            rpt.SetParameterValue("SoPhieu", "Số phiếu: " & pv.PaymentVoucherNo)
            rpt.SetParameterValue("NguoiNhan", pv.Reciever)
            rpt.SetParameterValue("LyDo", pv.Description)
            rpt.SetParameterValue("SoTien", pv.Amount.Value.ToString("#,##0.##"))
            rpt.SetParameterValue("BangChu", CModule_Sy.NumToStringVietNam(pv.Amount))
            'chỗ này lấy ra chứng từ kèm theo, chính là invoice no trong file fee
            Dim sChungTu As String = ""
            Try
                For Each fee As tblFileFee In pv.tblFileFees
                    If (fee.InvoiceNo <> "") Then
                        sChungTu = sChungTu & fee.InvoiceNo & "; "
                    End If
                Next
                If sChungTu <> "" Then
                    sChungTu = sChungTu.Substring(0, sChungTu - 2)
                End If
            Catch ex As Exception
            End Try
            rpt.SetParameterValue("ChungTuKem", sChungTu)
            rpt.SetParameterValue("GiamDoc", pv.tblUser.FullName)
            rpt.SetParameterValue("NguoiLap", txtNguoiLapPhieu.Text)
            rpt.SetParameterValue("ThuQuy", txtCashier.Text)
            'hien thi
            Dim uc As New ucReportViewer(rpt)
            frmMain.AddNewDockContainerItem(pv.PaymentVoucherNo, pv.PaymentVoucherNo, uc)

        Else
            MessageBox.Show("Phiếu để in không hợp lệ!")
        End If
    End Sub



    Private Sub cbFileSearch_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub AddNewOnePaymentVoucher()
        'Lấy số phiếu tự động
        Dim pNo As Integer = mPmV.GetLastedPaymentNo()

        If pNo = 0 Then
            txtPMVNo.Text = 1 & "/PC"

        Else
            txtPMVNo.Text = pNo + 1 & "/PC"
        End If

        'Load File vào cb
        uti.FillUserCombo(cbDirector, 4)
        datePayment.Value = DateTime.Now()
        chkExport.Checked = _isExport

        uti.FillAllFileForPaymentComboTree(cbTreeFileCase, chkExport.Checked)
        cbTreeFileCase.SelectedValue = _idOneFile

        'Kiểm tra file đã chọn đã chi chưa

        Dim isPayment As Boolean = False
        Dim mbr As New MBuyingRate
        Try
            isPayment = mbr.IsPayment(_idOneFile)
        Catch ex As Exception
            newOnePayment = False
            BindingDataToGrid()
            'cbTreeFileCase.Enabled = True
            MessageBox.Show("File chưa có danh sách phí giá bán, chọn file khác")
            Return
        End Try
        If isPayment = True Then
            newOnePayment = False

            BindingDataToGrid()
            MessageBox.Show("File đã được thanh toán")
            Return
        End If
        _isNew = True
        _isEdit = False
        EnableControls(True)
        txtPMVNo.Focus()
        cbTreeFileCase.Enabled = False
        btnEdit.Enabled = False
        btncancel.Enabled = True
        btnSave.Enabled = True
        btnDelete.Enabled = False
        btnAdd.Enabled = False

        'gridDetail.DataSource = Nothing
        _idPaymentV = 0
        txtTigia.Text = mfile.GetRatioCurrency(_idOneFile)

        If txtTigia.Text = "" Then
            MessageBox.Show("Nhập tỉ giá cho phiếu chi")
            Return
        End If


        'Load thông tin danh sách phí vào bảng chi tiết
        Dim query = mPmV.GetListFee2(_idOneFile)
        gridDetail.DataSource = query

        If gridDetail.RowCount > 0 Then
            Dim fileno As String = mfile.getFileNoFile(_idOneFile)

            If chkExport.Checked = True Then
                txtDescription.Text = "Chi phí File " & fileno & "/EX"
            Else
                txtDescription.Text = "Chi phí File " & fileno & "/IM"


            End If

            txtReceiver.Focus()
            gridDetail.Columns(0).Visible = False
            gridDetail.Columns(1).Visible = False
            gridDetail.Columns(2).Visible = False
            gridDetail.Columns(5).Visible = False
            'gridDetail.Columns(6).Visible = False

        Else
            _isNew = False
            newOnePayment = False
            _isEdit = False

            BindingDataToGrid()
            MessageBox.Show("Chưa tính phí của file này, chọn lại file khác")

            Return
        End If
        txtReceiver.Focus()
    End Sub

   

   

    Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        'Nếu chọn tính theo phí giá mua của file thì load chi tiết phí vào bảng chi tiết
        'Lấy thông tin tỉ giá của file cho vào tỉ giá


        'Kiểm tra file đã chọn đã chi chưa

        Dim isPayment As Boolean = False
        Dim mbr As New MBuyingRate
        Try
            isPayment = mbr.IsPayment(cbTreeFileCase.SelectedValue)

        Catch ex As Exception
            MessageBox.Show(ex.Message)
            Return
        End Try

        If isPayment = True Then
            MessageBox.Show("File đã được thanh toán")
            Return
        End If

        txtTigia.Text = mfile.GetRatioCurrency(cbTreeFileCase.SelectedValue)

        If txtTigia.Text = "" Then
            MessageBox.Show("Nhập tỉ giá cho phiếu chi")
            Return
        End If


        'Load thông tin danh sách phí vào bảng chi tiết
        Dim query = mPmV.GetListFee2(cbTreeFileCase.SelectedValue)
        gridDetail.DataSource = query

        If gridDetail.RowCount > 0 Then
            Dim fileno As String = mfile.getFileNoFile(cbTreeFileCase.SelectedValue)

            txtDescription.Text = "Chi phí File " & fileno

            txtPMVNo.Focus()
            gridDetail.Columns(0).Visible = False
            gridDetail.Columns(1).Visible = False
            gridDetail.Columns(2).Visible = False
            gridDetail.Columns(5).Visible = False
            ' gridDetail.Columns(6).Visible = False

        Else

            MessageBox.Show("Chưa tính phí của file này, chọn lại file khác")
            Return
        End If







    End Sub


    Private Sub btncancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncancel.Click
        _isNew = False
        _isEdit = False
        _isFileFee = False
        newOnePayment = False
        btnAdd.Enabled = True
        btnEdit.Enabled = True
        btnDelete.Enabled = True
        btnSave.Enabled = False
        btncancel.Enabled = False
        EnableControls(False)
        gridDetail.DataSource = Nothing
        LoadImport()
        BindingDataToGrid()

        If grid.RowCount <= 0 Then
            ResetField()
        End If

    End Sub
    Private Sub ResetField()
        txtTigia.Text = ""
        txtAmount.Text = ""
        txtDescription.Text = ""
        txtVietBangChu.Text = ""
        txtPMVNo.Text = ""
        txtCashier.Text = ""
        txtReceiver.Text = ""
    End Sub
    Private Sub CalculateTotalBuying()
        Dim gridTinhTong As DevComponents.DotNetBar.Controls.DataGridViewX
        gridTinhTong = gridDetail
        'Luôn là giá tiền Việt cần phải đổi theo tỉ giá nằm trong file

        Dim total As Double = 0
        For i As Integer = 0 To gridTinhTong.Rows.Count
            Try

                Dim price As Double

                If CInt(gridTinhTong.Rows(i).Cells(5).Value) = 1 Then
                    'Tiền việt
                    price = Double.Parse(gridTinhTong.Rows(i).Cells(4).Value.ToString)
                    total += price
                Else

                    price = Double.Parse(gridTinhTong.Rows(i).Cells(4).Value.ToString) * CDbl(txtTigia.Text.Replace(".", ""))
                    total += price
                End If

            Catch ex As Exception

            End Try
        Next
        txtAmount.Text = total
    End Sub

    Private Sub gridDetail_CellEndEdit(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles gridDetail.CellEndEdit
        If (e.ColumnIndex = 4) And (_isNew Or _isEdit) Then
            'cập nhật lại tổng
            CalculateTotalBuying()
        End If
    End Sub

    Private Sub gridDetail_DataBindingComplete(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewBindingCompleteEventArgs) Handles gridDetail.DataBindingComplete

        If gridDetail.RowCount > 0 Then
            FormatGridDetail()

        End If

        If (_isNew) Then
            'cập nhật lại tổng
            CalculateTotalBuying()
        End If



    End Sub

     
    Private Sub Filter(ByVal dateAdvance As DateTime)
        Dim query = mPmV.GetVoucherList(dateAdvance)
        Dim source As New BindingSource
        source.DataSource = query
        BindingNavigator1.BindingSource = source
        grid.DataSource = source

        grid.Columns(0).Visible = False
        grid.Columns(5).Visible = False
        grid.Columns(8).Visible = False
        grid.Columns(10).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
        'grid.Columns(11).Visible = False
        EnableControls(False)
    End Sub

    Private Sub btnBoLoc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        BindingDataToGrid()
    End Sub

    Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
        'Kiểm tra file đã approve chưa, nếu rồi thì k cho phép xóa

        If isApprove = True Then
            MessageBox.Show("Payment Voucher is approved. Don't allow delete")
            Return
        End If

        Try
            Dim result As Integer
            result = uti.ShowConfirm("Xác nhận", "Bạn chắc chắn muốn xoá phiếu chi này?")
            If result = DialogResult.Yes Then
                'Xóa thông tin khóa ngoại trong bảng có liên quan
                Dim mb As New MBuyingRate
                mb.DeleteRecordHasPayment(txtID_PaymentVoucher.Text)
                mPmV.DeleteRecord(txtID_PaymentVoucher.Text)
                gridDetail.DataSource = Nothing
                txtAmount.Text = 0
                BindingDataToGrid()
                EnableControls(False)

                If grid.RowCount <= 0 Then
                    txtPMVNo.Text = ""
                    txtReceiver.Text = ""
                    txtTigia.Text = ""
                    txtCashier.Text = ""
                    txtDescription.Text = ""
                    txtAmount.Text = ""
                    txtVietBangChu.Text = ""
                End If

            End If
        Catch ex As Exception
            MessageBox.Show("Chưa chọn phiếu chi")
            Return
        End Try
        isApprove = False
    End Sub

    Private Sub chkExport_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkExport.CheckedChanged
        'If radFileFee.Checked = True Then
        uti.FillAllFileComboTree(cbTreeFileCase, chkExport.Checked)
        cbTreeFileCase.Enabled = True
        _isFileFee = True
        'Else
        'cbTreeFileCase.Enabled = False
        '_isFileFee = False
        'End If

    End Sub

    Private Sub txtTigia_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTigia.TextChanged
        uti.FormatCurr(txtTigia)
    End Sub

    Private Sub grid_DataBindingComplete(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewBindingCompleteEventArgs) Handles grid.DataBindingComplete

        If newOnePayment Then
        Else
            uti.FillAllFileFinishPaymentComboTree(cbTreeFileCase, chkExport.Checked)
            _loadedData = True
            If grid.RowCount > 0 Then
                FormatGrid()
            End If
        End If

       

    End Sub

     
   
    Private Sub cbTreeFileCase_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbTreeFileCase.TextChanged
        'Kiểm tra file đã chọn đã chi chưa
         
        If _loadedData And _isNew Then
            Dim isPayment As Boolean = False
            Dim mbr As New MBuyingRate
            Try
                isPayment = mbr.IsPayment(cbTreeFileCase.SelectedValue)

            Catch ex As Exception
                gridDetail.DataSource = Nothing
                Return
            End Try
        
            'If isPayment = True Then
            '    ErrorProvider1.SetError(cbTreeFileCase, "File hiện tại chưa có danh sách phí giá mua, chọn lại File khác")
            '    Return
            'End If

            txtTigia.Text = mfile.GetRatioCurrency(cbTreeFileCase.SelectedValue)

            If txtTigia.Text = "" Then
                MessageBox.Show("Nhập tỉ giá cho phiếu chi")
                Return
            End If


            'Load thông tin danh sách phí vào bảng chi tiết
            Dim query = mPmV.GetListFee2(cbTreeFileCase.SelectedValue)
            gridDetail.DataSource = query

            If gridDetail.RowCount > 0 Then
                Dim fileno As String = mfile.getFileNoFile(cbTreeFileCase.SelectedValue)

                If chkExport.Checked = True Then
                    txtDescription.Text = "Chi phí File " & fileno & "/EX"
                Else
                    txtDescription.Text = "Chi phí File " & fileno & "/IM"
                End If


                txtPMVNo.Focus()
                gridDetail.Columns(0).Visible = False
                gridDetail.Columns(1).Visible = False
                gridDetail.Columns(2).Visible = False
                gridDetail.Columns(5).Visible = False
                'gridDetail.Columns(6).Visible = False
            Else

                MessageBox.Show("Chưa tính phí của file này, chọn lại file khác")
                Return
            End If
        End If

    End Sub
End Class